// 权限管理模块 -> 让路由响应式 -> 解决左侧菜单不显示的问题
import { constantRoutes, asyncRoutes } from '@/router'
const state = () => {
  return {
    // 路由规则数组，初始值是静态路由表
    routes: constantRoutes
  }
}
const mutations = {
  // 设置路由
  setRoutes (state, otherRoutes) {
    // 静和动合并之后再赋值
    state.routes = [...constantRoutes, ...otherRoutes]
  }
}
const actions = {
  // 筛选路由
  filterRoutesAction ({ commit }, menus) {
    // 根据用户角色列表筛选出应该展示的动态路由
    const otherRoutes = asyncRoutes.filter((item) =>
      menus.includes(item.children[0].name))
    // 提交mutation，给routes设置新值
    commit('setRoutes', otherRoutes)
    // 返回给 filterRoutesAction 这个方法调用的地方，就是筛选的结果
    return otherRoutes
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

